Redis value

Redis 除了对键的操作,当然也有不少对值的操作,通常,就比如 GETRANGE 即截取一部分变量/值信息,在 python 等语言中可以通过 [key:n] 来进行访问。

1
2
127.0.0.1:6379> GETRANGE key_name 1 4
"1234"

就如上述 code 中,1 是一个起始数,而 4 是一个结尾数,该键的值为 0123456,因此该命令可以实现出截取键值的效果。

Id Name Info Command
1 GETRANGE 截取键值并返回 GETRANGE key_name start end
2 GETSET 重新设置键值的时候返回旧的键值数据 GETSET key_name "Hello,world" (上一个 key_name 的值是 0123456,因此返回的也是他)
3 GETBIT 获取 key 所存储字符串的偏移量上的位(bit) SETBIT value offset
4 SETRANGE 通过偏移量来修改 key 中的值 SETRANGE key_name 5 " World!"
5 SETBIT 修改 key 所存储的字符串上的偏移量 (bit) SETBIT key_name 2 1
6 MGET 获取一个或多个 key MGET key_name1 key_name2
7 MSET 设置多个 key(依然会通过新值替换旧值) MSET key_one "one" key_two "two"
8 MSETNX 用于设置多个 key,遵循原子性操作(0失败,1成功) MSETNX key_one "one" key_two "two"
9 SETNX 如果 key 存在则什么都不做,不存在则插入 SETNX key_name "1" (如果 key_name 存在则返回 0,否则返回 1)
10 STRLEN 返回 key 值的字符串长度(如果存储的不是字符串类型则报错) STRLEN key_name
11 APPEND 该命令的好处就是直接在原有的键值中直接拼合 APPEND key_one "Hello" and APPEND key_one " World!" show Hello World!

获取或存储偏移量上的位

偏移量(Offset)简单概括就是存储地址和实际地址之间所存在的空段之间的距离,这通常被称之为有效地址或偏移量。

GETSET


我们以 GETSET 命令为例,首先 H 的二进制数为:01001000 ,通过 GETSET 分别输出一组后可以看到结果正是二进制数,因此本命令也就是获取 value 内的偏移量位数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
127.0.0.1:6379> GETBIT key_name 0
(integer) 0
127.0.0.1:6379> GETBIT key_name 1
(integer) 1
127.0.0.1:6379> GETBIT key_name 2
(integer) 0
127.0.0.1:6379> GETBIT key_name 3
(integer) 0
127.0.0.1:6379> GETBIT key_name 4
(integer) 1
127.0.0.1:6379> GETBIT key_name 5
(integer) 0
127.0.0.1:6379> GETBIT key_name 6
(integer) 0
127.0.0.1:6379> GETBIT key_name 7
(integer) 0

SETBIT

.SETBIT 在 redis 中,主要用于更改 key 的存储偏移量,如 SETBIT key_name 2 1 则表示将从0,左到右开始计数,替换原有的位数从而替换为 1,让其从 H 改为 h

.

1
2
3
4
127.0.0.1:6379> SETBIT key_name 2 1
(integer) 0
127.0.0.1:6379> GET key_name
"hello,world"

SETRANGE

1
2
3
4
5
6
7
127.0.0.1:6379> SET key_name "Hello"
OK
127.0.0.1:6379> SETRANGE key_name 5 " World!"
(integer) 12
127.0.0.1:6379> GET key_name
"Hello World!"
127.0.0.1:6379>

自增与自减

Id Name Info Command
1 INCR 将数值自曾(key 不存在时为 0,假设运行100次 INCR 则 数值也会被自曾到 100,每运行一次数值 +1) INCR key_one
2 INCRBY 在原有数值的基础上指定增加数值 INCRBY key_one 10(假设 key 内值为2,则通过该命令增加 10,即12)
3 DECR 在原有数值基础上来进行值减 DECR key_one (假设key内值为100,运行100次则为0)
4 DECRBY 在原有基础上自定义减值数 DECRBY key_one 9 (假设 key 值内为 10,则直接减为 9)
5 INCRBYFLOAT 为键的存储值中增加,可以执行像 1.03e+08 这样的科学计数法 INCRBYFLOAT key_name -0.01 \ INCRBYFLOAT key_name 1.03e08

INCRBYFLOAT

INCRBYFLOAT 的主要作用就是可以浮点数的增量以及支持诸如 1.03E+08 这样的科学计数法,此外无论加法计算所得到的精度实际长度有多长,该命令最终的结果只保留小数点后十七位数。

1
2
3
4
5
6
7
127.0.0.1:6379> SET key_name 1.04
OK
127.0.0.1:6379> INCRBYFLOAT key_name -0.01
"1.03"
127.0.0.1:6379> INCRBYFLOAT key_name 1.03e08
"103000001.02999999999883585"
127.0.0.1:6379>

e 是一个科学计数法符号,通常以 “E” 表示,在科学计数法中为了公式的简便,可以将 1.03 x10的次方简写为 1.03E+08 的形式

1.03 x 10的8次方,也就是 8个10相乘,之后在乘于 1.03,只保留十七位小数则应为 103000001.02999999999883585

本文使用《江雪分析公开知识存储库知识共享许可证》进行发布